package 四月份代码;

//调用 方法 实现两个变量相加
//public class Test_4_5 {
//    public static void main(String[] args) {
//
//        int a = 10;
//        int b = 20;
//        // 方法的调用
//        int rep = Add(a, b);
//        System.out.println("rep = " + rep);
//    }
//    // 方法的定义 (在C语言里就叫 函数的定义)
//    public static int Add(int a, int b){
//
//        return a + b;
//    }
//}

//通过数组改变两个参数值的位置
//public class Test_4_5 {
//    public static void main(String[] args) {
//
//        int a = 10;
//        int b = 20;
//        int[] arr = {a, b};//创建数组
//        //数组名字表示 首元素地址
//        swap(arr);//传 地址 调用
//        System.out.println("a = " + arr[0]);
//        System.out.println("b = " + arr[1]);
//    }
//    // 方法的定义             (用 整形数组 来接收)
//    public static void swap(int[] arr){
//
//        int tmp = arr[0];
//        arr[0] = arr[1];
//        arr[1] = tmp;
//    }
//
//}

// 方法 的 重载

//public class Test_4_5 {
//    public static void main(String[] args) {
//        int a = 10;
//        int b = 20;
//        int ret = add(a, b);
//        System.out.println("ret = " + ret);
//        double a2 = 10.5;
//        double b2 = 20.5;
//       // double ret2 = add(a2, b2);
//        //System.out.println("ret2 = " + ret2);
//    }
//    public static int add(int x, int y) {
//        return x + y;
//    }
//}

// 使用 重载
//public class Test_4_5 {
//    public static void main(String[] args) {
//        int a = 10;
//        int b = 20;
//        int ret = add(a, b);
//        System.out.println("ret = " + ret);
//        double a2 = 10.5;
//        double b2 = 20.5;
//        double ret2 = add(a2, b2);
//        System.out.println("ret2 = " + ret2);
//
//        double x1 = 10.5;
//        double x2 = 20.5;
//        double x3 = 5.6;
//        double y3 = add(x1, x2, x3);
//        System.out.println("y3 = " + y3);
//    }
//    public static int add(int x, int y) {
//        return x + y;
//    }
//    public static double add(double x, double y) {
//        return x + y;
//    }
//    public static double add(double x, double y, double z) {
//        return x + y + z;
//    }
//}

//如果当两个方法的 名字相同 , 参数也相同, 但是返回值不同的时候, 不构成重载

//public class Test_4_5 {
//    public static void main(String[] args) {
//        int a = 10;
//        int b = 20;
//        int ret = add(a, b);
//        System.out.println("ret = " + ret);
//
//    }
//    public static int add(int x, int y) {
//
//        return x + y;
//    }
//    public static int add(int x, int y) {
//
//        return x + y;
//    }
//
//}

//使用递归，完成 N！

//public class Test_4_5 {
//    public static void main(String[] args) {
//
//        int a = 5;
//        int rep = stairs(a);
//        System.out.println("a! = " + rep);//120
//    }
//    public static int stairs(int a){
//
//        if(a == 1 || a == 0)
//            return 1;
//        return a * stairs(a - 1);
//    }
//}

//代码示例1 按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)

//public class Test_4_5 {
//    public static void main(String[] args) {
//
//        int a = 10364;
//        printt(a);
//    }
//    public static void printt(int a){
//
//        if(a < 10){
//            System.out.print(a + " ");
//        }else{
//
//            printt(a / 10);
//            System.out.print(a % 10 + " ");
//        }
//
//    }
//}

//代码示例2 递归求 1 + 2 + 3 + ... + 10

//public class Test_4_5 {
//    public static void main(String[] args) {
//
//        int a = 5;
//        int rep = floor(a);
//        System.out.println(rep);
//    }
//    public static int floor(int a){
//
//        if(a == 1 || a == 0)
//            return 1;
//        else{
//            int tmp = 1;
//            int conut = 1;
//            while(conut <= a){
//
//                tmp *= conut;
//                conut++;
//            }
//            return tmp + floor(a - 1);
//        }
//
//    }
//}

//代码示例3 写一个递归方法，输入一个非负整数，返回组成它的数字之和. 例如，输入 1729, 则应该返回1+7+2+9，
//它的和是19

//public class Test_4_5 {
//    public static void main(String[] args) {
//
//        int a = 6023;
//        int rep = floor(a);
//        System.out.println(rep);//输出：11
//    }
//    public static int floor(int a){
//
//       if(a < 10)
//           return a;
//       else{
//
//           return a % 10 + floor(a / 10);
//       }
//
//
//    }
//}

////代码示例4 求斐波那契数列的第 N 项 用递归求
//public class Test_4_5 {
//
//    // 这个是类的成员变量,生命周期是 整个主类里面 统计次数
//    public static int conut = 0;
//    public static void main(String[] args) {
//        //1、1、2、3、5、8、13、21、34
//        int a = 30;
//        int rep = Fib(a);
//        System.out.println("斐波那契第 " + a + " 项值 = " + rep);//输出：34
//        System.out.println("conut = " + conut);
//    }
//    public static int Fib(int a){
//
//        if(a == 1 || a == 2)
//            return 1;
//        else{
//            if(a == 3){
//                conut++;
//            }
//            //斐波那契第 N 项 值等于前两项和
//            return Fib(a - 1) + Fib(a - 2);
//        }
//
//    }
//}

//代码示例4 求斐波那契数列的第 N 项 用循环的方法
//public class Test_4_5 {
//
//    public static void main(String[] args) {
//        //1、1、2、3、5、8、13、21、34
//        int a = 10;
//        int rep = Fib(a);
//        System.out.println("斐波那契第 " + a + " 项值 = " + rep);//输出：34
//
//    }
//    public static int Fib(int a){
//
//       int num1 = 1;//用来表示前 2 项值
//       int num2 = 1;//用来表示前 2 项值
//       int sum = 0;//用来放前两项值的 和
//        for (int i = 3; i <= a; i++) {
//
//            sum = num1 + num2;
//            num1 = num2;//每循环一次 就等于后面一位的值
//            num2 = sum;
//        }
//        return sum;
//    }
//}